package com.kaibes.core.base.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

/**
 * Created by Administrator on 2015/7/20.
 */
public class BigDecimalUtils {

    public static final DecimalFormat DECIMAL_FORMAT_2 = new DecimalFormat("0.00");
    public static final DecimalFormat DECIMAL_FORMAT_1 = new DecimalFormat("0.0");
    public static final DecimalFormat DECIMAL_FORMAT_0 = new DecimalFormat("0");

    public final static BigDecimal BIG_DECIMAL_ZERO = new BigDecimal("0");
    public final static BigDecimal BIG_DECIMAL_ONE = new BigDecimal("1.00");
    public final static BigDecimal BIG_DECIMAL_HUNDRED = new BigDecimal("100.00");
    
    /**
     * 将bigDecimal舍去为0个小数
     * @param bigDecimal
     * @return
     */
    public static BigDecimal floor_0(BigDecimal bigDecimal) {
        bigDecimal.setScale(0).scale();
        bigDecimal.add(bigDecimal);
        return bigDecimal.setScale(0, RoundingMode.FLOOR);
    }
    /**
     * 将bigDecimal舍去为1个小数
     * @param bigDecimal
     * @return
     */
    public static BigDecimal floor_1(BigDecimal bigDecimal) {
        return bigDecimal.setScale(1, RoundingMode.FLOOR);
    }
    /**
     * 将bigDecimal舍去为2个小数
     * @param bigDecimal
     * @return
     */
    public static BigDecimal floor_2(BigDecimal bigDecimal) {
        return bigDecimal.setScale(2, RoundingMode.FLOOR);
    }

    /**
     * 将bigDecimal舍去为0个小数并返回字符串
     * @param bigDecimal
     * @return
     */
    public static String toString_0(BigDecimal bigDecimal) {
        return floor_0(bigDecimal).toString();
    }
    /**
     * 将bigDecimal舍去为1个小数并返回字符串
     * @param bigDecimal
     * @return
     */
    public static String toString_1(BigDecimal bigDecimal) {
        return floor_1(bigDecimal).toString();
    }
    /**
     * 将bigDecimal舍去为2个小数并返回字符串
     * @param bigDecimal
     * @return
     */
    public static String toString_2(BigDecimal bigDecimal) {
        return floor_2(bigDecimal).toString();
    }

    public static BigDecimal getBigDecimal(String value) {
        if (value==null || value.isEmpty() || value.equals("null")) {
            value = "0";
        }
        return new BigDecimal(value);
    }
    
    public static BigDecimal getBigDecimal(double value) {
        return new BigDecimal(value);
    }
    
    public static BigDecimal toPercent(double value) {
        return new BigDecimal(value).multiply(BIG_DECIMAL_HUNDRED);
    }
    
}
